﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Drawing;
using System.Data;
using System.Text;
using System.Windows.Forms;
using DevExpress.XtraEditors;

using BUS;
using DTO;
using System.Collections;

namespace Control
{
    public partial class ctrlTraCuu : DevExpress.XtraEditors.XtraUserControl
    {
        public ctrlTraCuu()
        {
            InitializeComponent();

            //setting grid
            //không cho phép thêm dòng
            this.gridView1.OptionsBehavior.AllowAddRows = DevExpress.Utils.DefaultBoolean.False;
            //không cho phép xóa dòng
            this.gridView1.OptionsBehavior.AllowDeleteRows = DevExpress.Utils.DefaultBoolean.False;
            //không cho phép chỉnh sửa trên grid
            this.gridView1.OptionsBehavior.Editable = false;
            //Thêm bộ lọc
            //this.gridView1.OptionsFind.AlwaysVisible = true;
            //Không cho hiển thị menu khi bấm phím phải chuột vào header
            this.gridView1.OptionsMenu.EnableColumnMenu = false;
            //không hiển thị "Drag a column header to group by that column"
            this.gridView1.OptionsView.ShowGroupPanel = false;

            //format nam xuat ban
            this.dateNamXuatBan.Properties.DisplayFormat.FormatString = "yyyy";
            this.dateNamXuatBan.Properties.DisplayFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNamXuatBan.Properties.EditFormat.FormatString = "yyyy";
            this.dateNamXuatBan.Properties.EditFormat.FormatType = DevExpress.Utils.FormatType.DateTime;
            this.dateNamXuatBan.Properties.Mask.EditMask = "yyyy";
        }

        private void checkTenSach_CheckedChanged(object sender, EventArgs e)
        {
            if (checkTenSach.Checked)
                txtTenSach.Enabled = true;
            else
                txtTenSach.Enabled = false;
        }

        private void checkNhaXuatBan_CheckedChanged(object sender, EventArgs e)
        {
            if (checkNhaXuatBan.Checked)
                txtNhaXuatBan.Enabled = true;
            else
                txtNhaXuatBan.Enabled = false;
        }

        private void checkTheLoai_CheckedChanged(object sender, EventArgs e)
        {
            if (checkTheLoai.Checked)
                lookUpTheLoai.Enabled = true;
            else
                lookUpTheLoai.Enabled = false;
        }

        private void checkNamXuatBan_CheckedChanged(object sender, EventArgs e)
        {
            if (checkNamXuatBan.Checked)
                dateNamXuatBan.Enabled = true;
            else
                dateNamXuatBan.Enabled = false;
        }

        private void checkTenTacGia_CheckedChanged(object sender, EventArgs e)
        {
            if (checkTenTacGia.Checked)
                txtTenTacGia.Enabled = true;
            else
                txtTenTacGia.Enabled = false;
        }

        private void checkTinhTrang_CheckedChanged(object sender, EventArgs e)
        {
            if (checkTinhTrang.Checked)
                lookUpTinhTrang.Enabled = true;
            else
                lookUpTinhTrang.Enabled = false;
        }

        private void ctrlTraCuu_Load(object sender, EventArgs e)
        {
            //uncheck cho tất  cả checkbox
            checkTenSach_CheckedChanged(null, null);
            checkNhaXuatBan_CheckedChanged(null, null);
            checkTheLoai_CheckedChanged(null, null);
            checkNamXuatBan_CheckedChanged(null, null);
            checkTenTacGia_CheckedChanged(null, null);
            checkTinhTrang_CheckedChanged(null, null);

            //load tình trạng
            lookUpTinhTrang.Properties.DataSource = TinhTrangBUS.DocDanhSach();
            lookUpTinhTrang.Properties.DisplayMember = "TenTinhTrang";
            lookUpTinhTrang.Properties.ValueMember = "MaTinhTrang";

            //load thể loại
            lookUpTheLoai.Properties.DataSource = TheLoaiSachBUS.DocDanhSach();
            lookUpTheLoai.Properties.DisplayMember = "TenTheLoai";
            lookUpTheLoai.Properties.ValueMember = "MaTheLoai";

            //load tình trạng repositoryItemLookUpEdit3
            repositoryItemLookUpEdit3.DataSource = TinhTrangBUS.DocDanhSach();
            repositoryItemLookUpEdit3.DisplayMember = "TenTinhTrang";
            repositoryItemLookUpEdit3.ValueMember = "MaTinhTrang";

            //load thể loại repositoryItemLookUpEdit2
            repositoryItemLookUpEdit2.DataSource = TheLoaiSachBUS.DocDanhSach();
            repositoryItemLookUpEdit2.DisplayMember = "TenTheLoai";
            repositoryItemLookUpEdit2.ValueMember = "MaTheLoai";

            //load sách repositoryItemLookUpEdit1
            repositoryItemLookUpEdit1.DataSource = SachBUS.DocDanhSach(1);
            repositoryItemLookUpEdit1.DisplayMember = "TenSach";
            repositoryItemLookUpEdit1.ValueMember = "MaSach";
        }


        private void gridView1_CustomDrawCell(object sender, DevExpress.XtraGrid.Views.Base.RowCellCustomDrawEventArgs e)
        {
            //thêm dữ liệu vào cho cột số thứ tự
            if (e.Column == colSTT)
                e.DisplayText = (e.RowHandle + 1).ToString();
        }

        private void btnTraCuu_Click(object sender, EventArgs e)
        {
            if (KiemTra() == false)
                return;

            //tạo đối tượng lưu thông tin tra cứu
            SachDTO s = new SachDTO
            {
                TenSach = "",
                NhaXuatBan = "",
                TenTacGia = "",
                MaTheLoai = 0,
                NamXuatBan = 0,
                MaTinhTrang = 0
            };

            //kiểm tra giao diện và thêm vào dữ liệu
            if (checkTenSach.Checked)
                s.TenSach = txtTenSach.Text;

            if (checkNhaXuatBan.Checked)
                s.NhaXuatBan = txtNhaXuatBan.Text;

            if (checkTheLoai.Checked)
                s.MaTheLoai = (int)lookUpTheLoai.EditValue;

            if (checkNamXuatBan.Checked)
                s.NamXuatBan = dateNamXuatBan.DateTime.Year;

            if (checkTenTacGia.Checked)
                s.TenTacGia = txtTenTacGia.Text;

            if (checkTinhTrang.Checked)
                s.MaTinhTrang = (int)lookUpTinhTrang.EditValue;

            //đọc dữ liệu lên grid
            gridControl1.DataSource = SachBUS.TraCuu(s);
        }

        private bool KiemTra()
        {
            if (checkTheLoai.Checked)
                if (lookUpTheLoai.ItemIndex == -1)
                {
                    MessageBox.Show("Chưa chọn thể loại", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return false;
                }

            if (checkTinhTrang.Checked)
                if (lookUpTinhTrang.ItemIndex == -1)
                {
                    MessageBox.Show("Chưa chọn tình trạng", "Lỗi!!!", MessageBoxButtons.OK, MessageBoxIcon.Error);
                    return false;
                }

            return true;
        }
    }
}
